package game.graphics.lighting
{
	import away3d.core.base.*;
	import away3d.core.managers.*;
	import away3d.entities.*;
	import engine.graphics.away3d.*;
	import engine.graphics.lighting.*;
	import flash.display3D.*;
	import game.graphics.shader.*;
	
	public class RxPointLightMesh
	{
		private var m_mesh:Mesh;
		private var m_scale:Number;
		private var m_shaderFamily:RxShaderFamilyPointLight;
		private var m_shaderFeatures:uint;
		
		public function RxPointLightMesh()
		{
			this.m_mesh = null;
			this.m_scale = 0;
			this.m_shaderFamily = null;
			this.m_shaderFeatures = 0;
		}
		
		public function CreateMesh(param1:Context3D, param2:uint) : void
		{
			var _loc_13:uint = 0;
			var _loc_14:uint = 0;
			var _loc_15:Number = NaN;
			var _loc_22:Number = NaN;
			var _loc_23:Number = NaN;
			var _loc_24:Number = NaN;
			var _loc_25:Number = NaN;
			var _loc_3:* = 2 * param2;
			var _loc_4:* = param2;
			var _loc_5:* = (_loc_3 + 1) * (_loc_4 + 1);
			var _loc_6:* = new Vector.<Number>(3 * _loc_5, true);
			var _loc_7:* = 1 / Number(_loc_3);
			var _loc_8:* = 1 / Number(_loc_4);
			var _loc_9:* = Math.tan(Math.PI * _loc_7);
			var _loc_10:* = Math.tan(Math.PI * _loc_8);
			var _loc_11:* = Math.sqrt(2 * _loc_9 * _loc_9 + 1);
			var _loc_12:* = Math.sqrt(2 * _loc_10 * _loc_10 + 1);
			this.m_scale = Math.max(_loc_11, _loc_12);
			var _loc_16:uint = 0;
			_loc_14 = 0;
			while (_loc_14 <= _loc_4)
			{
				
				_loc_15 = Math.PI * _loc_14 * _loc_8;
				_loc_22 = Math.sin(_loc_15);
				_loc_23 = Math.cos(_loc_15);
				_loc_13 = 0;
				while (_loc_13 <= _loc_3)
				{
					
					_loc_15 = 2 * Math.PI * _loc_13 * _loc_7;
					_loc_24 = Math.sin(_loc_15);
					_loc_25 = Math.cos(_loc_15);
					_loc_6[_loc_16 + 0] = _loc_25 * _loc_22;
					_loc_6[(_loc_16 + 1)] = _loc_24 * _loc_22;
					_loc_6[_loc_16 + 2] = _loc_23;
					_loc_6[_loc_16 + 0] = _loc_6[_loc_16 + 0] * this.m_scale;
					_loc_6[(_loc_16 + 1)] = _loc_6[(_loc_16 + 1)] * this.m_scale;
					_loc_6[_loc_16 + 2] = _loc_6[_loc_16 + 2] * this.m_scale;
					_loc_16 = _loc_16 + 3;
					_loc_13 = _loc_13 + 1;
				}
				_loc_14 = _loc_14 + 1;
			}
			var _loc_17:* = _loc_4 * (6 * (_loc_3 + 1));
			var _loc_18:* = new Vector.<uint>(_loc_17, true);
			_loc_16 = 0;
			_loc_14 = 0;
			while (_loc_14 < _loc_4)
			{
				
				_loc_13 = 0;
				while (_loc_13 <= _loc_3)
				{
					
					_loc_18[_loc_16 + 0] = _loc_14 * (_loc_3 + 1) + _loc_13 + 1;
					_loc_18[(_loc_16 + 1)] = (_loc_14 + 1) * (_loc_3 + 1) + _loc_13;
					_loc_18[_loc_16 + 2] = _loc_14 * (_loc_3 + 1) + _loc_13;
					_loc_18[_loc_16 + 3] = (_loc_14 + 1) * (_loc_3 + 1) + _loc_13;
					_loc_18[_loc_16 + 4] = _loc_14 * (_loc_3 + 1) + _loc_13 + 1;
					_loc_18[_loc_16 + 5] = (_loc_14 + 1) * (_loc_3 + 1) + _loc_13 + 1;
					_loc_16 = _loc_16 + 6;
					_loc_13 = _loc_13 + 1;
				}
				_loc_14 = _loc_14 + 1;
			}
			var _loc_19:* = new SubGeometry();
			new SubGeometry().updateVertexData(_loc_6);
			_loc_19.updateIndexData(_loc_18);
			var _loc_20:* = new Geometry();
			new Geometry().addSubGeometry(_loc_19);
			var _loc_21:* = new RxMaterial(null);
			this.m_mesh = new Mesh(_loc_21, _loc_20);
		}
	}
}